// import { resolve } from "core-js/fn/promise";
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

const store = new Vuex.Store({
	state: {
		name: "xx",
		number: 66,
		list: [
			{ id: 1, name: "111" },
			{ id: 2, name: "222" },
			{ id: 3, name: "333" },
		],
	},

	getters: {
		getMessage(state) {
			return `hello${state.name}`;
		},
	},

	// Mutations里面的函数必须是同步操作，不能包含异步操作！
	mutations: {
		setNumber(state) {
			//增加一个mutations的方法，方法的作用是让num从0变成5，state是必须默认参数
			state.number = 11;
		},
		setNumberIsWhat(state, payload) {
			//增加一个带参数的mutations方法，并且官方建议payload为一个对象
			state.number = payload.number;
		},
	},

	actions: {
		// setNum(content,payload) { //增加setNum方法，默认第一个参数是content，其值是复制的一份store
		// 	return new Promise((resolve) => { // // 我们模拟一个异步操作，1秒后修改number为888
		// 		setTimeout(() => {
		// 			content.commit("setNumberIsWhat", { number: payload.number });
		// 			resolve();
		// 		}, 2000);
		// 	});
		// },
		setNum({ commit }) {
			// 直接将content结构掉，解构出commit，下面就可以直接调用了
			return new Promise((resolve) => {
				setTimeout(() => {
					commit("XXXX"); // 直接调用
					// commit("setNumberIsWhat", { number: payload.number });
					resolve();
				}, 1000);
			});
		},
	},
});

export default store;
